From: Carlos Garnacho Date: Sat, 27 Jan 2024 13:18:47 +0000 (+0100) Subject: keyboard: Simplify KeyContainer X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~281^2~1^2~72 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=9a340c6d660d5fb83c6eff181f648f3780d5017b;p=gnome-shell.git keyboard: Simplify KeyContainer We no longer have any guesswork during layout creation, we can attach key actors directly to the grid without a second step. Part-of: --- diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index 09edaa14d..3a1eaada4 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -94,55 +94,29 @@ class KeyContainer extends St.Widget { y_expand: true, }); this._gridLayout = gridLayout; - this._currentRow = 0; + this._nRows = 0; this._currentCol = 0; this._maxCols = 0; - - this._currentRow = null; - this._rows = []; } appendRow() { - this._currentRow++; + this._nRows++; this._currentCol = 0; - - let row = { - keys: [], - width: 0, - }; - this._rows.push(row); } appendKey(key, width = 1, height = 1, leftOffset = 0) { - const keyInfo = { - key, - left: this._currentCol + leftOffset, - top: this._currentRow, - width, - height, - }; - - let row = this._rows[this._rows.length - 1]; - row.keys.push(keyInfo); - row.width += width; + const left = this._currentCol + leftOffset; + const top = this._nRows; + this._gridLayout.attach(key, + left * KEY_SIZE, top * KEY_SIZE, + width * KEY_SIZE, height * KEY_SIZE); this._currentCol += leftOffset + width; this._maxCols = Math.max(this._currentCol, this._maxCols); } - layoutButtons() { - this._rows.forEach(row => { - row.keys.forEach(keyInfo => { - const {left, top, width, height} = keyInfo; - this._gridLayout.attach(keyInfo.key, - left * KEY_SIZE, top * KEY_SIZE, - width * KEY_SIZE, height * KEY_SIZE); - }); - }); - } - getRatio() { - return [this._maxCols, this._rows.length]; + return [this._maxCols, this._nRows]; } }); @@ -1056,7 +1030,6 @@ const EmojiSelection = GObject.registerClass({ this.emit('close-request'); }); row.appendKey(key); - row.layoutButtons(); const actor = new AspectContainer({ layout_manager: new Clutter.BinLayout(), @@ -1430,7 +1403,6 @@ export const Keyboard = GObject.registerClass({ layers[currentLevel.level] = levelLayout; layout.add_child(levelLayout); - levelLayout.layoutButtons(); levelLayout.hide(); });